﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BE;
using Mapeo;
using NHibernate;
using MySql.Data.MySqlClient;
using System.Data;

namespace BL
{
    public class NotaDesaprobados_BL: Controlador
    {

        public List<ListadoNotasDesaprobadas> ObtenerListadoNotasDesaprobadas(String codigo,String nombre) {
            EjecutaProcedimiento ep = new EjecutaProcedimiento();
            ep.NombreProcedimiento = "sp_BusquenaNotasDesaprobadas_Alumno";
            ParametroProcedimiento parametro1=new ParametroProcedimiento();
            parametro1.Nombre = "inCodigo";
            parametro1.Valor = codigo;
            ep.AddItem(parametro1);

            ParametroProcedimiento parametro2 = new ParametroProcedimiento();
            parametro2.Nombre = "inNombre";
            parametro2.Valor = nombre;
            ep.AddItem(parametro2);


            List<ListadoNotasDesaprobadas> lista = AyudaNHibernate.ObtenerListadoNotasDesaprobadas(ep);
            return lista;
        }


        public List<ListadoPromedioSemestral> ObtenerPromedioAlumno(String codigo)
        {
            EjecutaProcedimiento ep = new EjecutaProcedimiento();
            ep.NombreProcedimiento = "sp_PromediosAlumno";
            ParametroProcedimiento parametro1 = new ParametroProcedimiento();
            parametro1.Nombre = "inCodigo";
            parametro1.Valor = codigo;
            ep.AddItem(parametro1);

            List<ListadoPromedioSemestral> lista = AyudaNHibernate.obtenerListaPromedio(ep);
            return lista;
        }

        public Alumno obtenerAlumno(String Codigo) {
            return (Alumno)AyudaNHibernate.ObtenerEntidadPorID("Alumno", Codigo);
        }


        public Nota obtenerNota(String Codigo)
        {
            return (Nota)AyudaNHibernate.ObtenerEntidadPorID("Nota", Codigo);
        }


        public NotaComplementaria obtenerNotaComplementaria(String Codigo)
        {
            return (NotaComplementaria)AyudaNHibernate.ObtenerEntidadPorID("NotaComplementaria", "23");
        }

        public void InsertarNotaNueva(Nota nota,NotaComplementaria notac)
        {
           

            OperacionesSubnarNotasDesaprobadas ope = new OperacionesSubnarNotasDesaprobadas();
            ope.CrearNota(nota, notac);
            ope.ActualizarPeriodo(nota);
            
        }

        public Int32 CantidadDeVecesJalados(String CodigoAlumno, String CodigoEspecialidad, String CodigoCurso)
        {
            try
            {
                using (ISession Sesion = m_SessionFactory.OpenSession())
                {
                    using (ITransaction Trans = Sesion.BeginTransaction())
                    {
                        MySqlCommand SqlCmd = new MySqlCommand();
                        SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                        Trans.Enlist(SqlCmd);
                        SqlCmd.CommandText = "sp_ValidarCantidadDesaprobados";
                        SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                        SqlCmd.Parameters.AddWithValue("@inCodAlumno", CodigoAlumno);
                        SqlCmd.Parameters.AddWithValue("@inEspecialidad", CodigoEspecialidad);
                        SqlCmd.Parameters.AddWithValue("@inCurso", CodigoCurso);
                        SqlCmd.Parameters.Add("@outCantidaVeces", MySqlDbType.Int32, 50);
                        SqlCmd.Parameters["@outCantidaVeces"].Direction = ParameterDirection.Output;
                        SqlCmd.ExecuteNonQuery();
                        Trans.Commit();
                        return Convert.ToInt32(SqlCmd.Parameters["@outCantidaVeces"].Value);           
                    }
                }
            }
            catch (Exception ex)
            {
                new Exception(ex.Message) ;
                return 0;
            }
        }



    }
}
